package edu.scu.declaresys.dao.intr;

import edu.scu.declaresys.exception.ExecuteException;
import edu.scu.declaresys.util.PageList;
import edu.scu.declaresys.vo.Project;

/**
 * 
 * @author: zt
 * @since : 2013-7-4
 */
public interface IProjectDAO extends IGeneralDAO<Project>
{
//	/**
//	 * 查找该地区下所有的
//	 *@param rootAreaId
//	 *@return
//	 *@throws ExecuteException
//	 */
//	public List<Project> findProjectOfArea(Integer rootAreaId) throws ExecuteException;

	/**
	 * 
	 *@param userId 不指定时查找所有用户的项目
	 *@param excludeStates
	 *@return
	 *@throws ExecuteException
	 */
	public PageList<Project> findByExcludeStates(Integer userId,Integer[] excludeStates,
			int depth, Integer pageNum, Integer amtPerPage, String orderColumn, Boolean isAsc) 
	throws ExecuteException;

	/**
	 * 用于申报人员、推荐人员、审批人员查找项目
	 *@param declareUserId
	 *@param countyRecUserId
	 *@param cityRecUserId
	 *@param provinceRecUserId
	 *@param auditUserId
	 *@param states
	 *@param year
	 *@param projectClassId
	 *@param projectName
	 *@param depth
	 *@param pageNum
	 *@param amtPerPage
	 *@param orderColumn
	 *@param isAsc
	 *@return
	 *@throws ExecuteException
	 */
	public PageList<Project> findProject(Integer declareUserId, Integer countyRecUserId, 
			Integer cityRecUserId, Integer provinceRecUserId, Integer auditUserId,
			Integer[] states, Integer year, Integer projectClassId, String projectName,
			int depth, Integer pageNum, Integer amtPerPage, String orderColumn, Boolean isAsc)
	throws ExecuteException;
			
	
	/**
	 * 检索已通过和未通过项目
	 *@param cityId
	 *@param countyId
	 *@param declareUserId
	 *@param projectClassId
	 *@param year
	 *@param projectName
	 *@param depth
	 *@param pageNum
	 *@param amtPerPage
	 * @param projectAmtPerPage 
	 *@param orderColumn
	 *@param isAsc
	 *@return
	 *@throws ExecuteException
	 */
	public PageList<Project> searchProject(Integer cityId, Integer countyId, Integer declareUserId,
			Integer projectClassId, Integer year, String projectName, Integer state,			
			int depth, 
			Integer pageNum, Integer amtPerPage,
			String orderColumn, Boolean isAsc) 
	throws ExecuteException;
}
